package com.hope.hotel.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.hope.hotel.common.Result;
import com.hope.hotel.entity.dto.ReviewDTO;
import com.hope.hotel.entity.po.Review;

/**
 * 评论服务接口
 */
public interface ReviewService extends IService<Review> {
    /**
     * 添加评论
     * @param reviewDTO 评论信息
     * @return 结果
     */
    Result addReview(ReviewDTO reviewDTO);
    
    /**
     * 获取酒店评论列表
     * @param hotelId 酒店ID
     * @param page 页码
     * @param pageSize 每页大小
     * @return 结果
     */
    Result getHotelReviews(String hotelId, int page, int pageSize);
    
    /**
     * 获取用户评论列表
     * @param userId 用户ID
     * @return 结果
     */
    Result getUserReviews(String userId);
    
    /**
     * 删除评论
     * @param reviewId 评论ID
     * @param userId 用户ID
     * @return 结果
     */
    Result deleteReview(String reviewId, String userId);
    
    /**
     * 获取酒店评论统计信息
     * @param hotelId 酒店ID
     * @return 统计信息，包括平均分和各评分等级的分布
     */
    Result getHotelReviewStats(String hotelId);
    
    /**
     * 管理员获取酒店评论列表（带筛选条件）
     * @param hotelId 酒店ID
     * @param adminId 管理员ID
     * @param rating 评分筛选(可选)
     * @param status 状态筛选(可选)
     * @param startDate 开始日期(可选)
     * @param endDate 结束日期(可选)
     * @param page 页码
     * @param pageSize 每页大小
     * @return 结果
     */
    Result getHotelReviewsForAdmin(String hotelId, String adminId, Integer rating, Integer status, String startDate, String endDate, int page, int pageSize);
    
    /**
     * 管理员回复评论
     * @param reviewId 评论ID
     * @param adminId 管理员ID
     * @param reply 回复内容
     * @return 结果
     */
    Result replyReview(String reviewId, String adminId, String reply);
    
    /**
     * 管理员更新评论状态（隐藏/显示）
     * @param reviewId 评论ID
     * @param adminId 管理员ID
     * @param status 状态码
     * @return 结果
     */
    Result updateReviewStatus(String reviewId, String adminId, Integer status);
} 